<?php
function connectToDatabase()
{
    $servername = "localhost"; // 数据库服务器的名称或 IP 地址
    $username = "root"; // 数据库用户名
    $password = ""; // 数据库密码
    $dbname = "hotelbackenddatabase"; // 数据库名称

    // 设置 PDO 连接参数
    $options = array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 设置错误处理模式为异常模式
        PDO::ATTR_EMULATE_PREPARES => false, // 禁用模拟准备语句，确保安全的 SQL 语句执行
    );
    try {
        // 创建 PDO 数据库连接
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password, $options);
        // 设置字符集
        $conn->exec("SET NAMES 'utf8'");

        return $conn; // 返回连接对象
    } catch (PDOException $e) {
        $errorMsg = "连接数据库失败: " . $e->getMessage() . " 时间: " . date("Y-m-d H:i:s") . PHP_EOL;
        $errorMsg .= " 文件:" . $e->getFile() . " 行号:" . $e->getLine() . PHP_EOL;
        $errorMsg .= "堆栈跟踪信息: " . $e->getTraceAsString() . PHP_EOL;
        $errorMsg .= "异常类型: " . get_class($e) . PHP_EOL;
        $errorMsg .= "代码段: " . substr(file_get_contents($e->getFile()), ($e->getLine() - 3) * 25, 150) . PHP_EOL;
        $errorMsg .= str_repeat("=", 100) . PHP_EOL; // 添加分隔符
        file_put_contents("error.log", $errorMsg, FILE_APPEND);

        // 抛出异常
        throw $e;
    }
}
